package com.tedu.api.thread;

/**
 * 软件--多个或者一个进程【理解：工厂】----很多线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类--创建线程，编写步骤：
 *                         ①类继承Thread线程类
 *                         ②run方法--线程功能
 *                         ③start方法--启动线程
 *    优点：使用比较方便，拓展性比较弱，继承线程，无法继承其他类
 *    缺点：拓展性比较弱，继承线程，无法继承其他类【java类单继承】
 *         子类继承Thread，重写run方法，不利于线程复用
 *
 * 2.Runnable接口--创建线程，编写步骤：
 *                          ①子类实现Runnable,必须实现run方法
 *                          ②Runnable父类引用指向子类【没有start方法】
 *                          ③创建Thread类，Runnable对象传入Thread构造器中
 *                          ④启动线程【start方法】
 * 3.匿名内部类方式--Lambda表达式
 */
public class RunableAPI {
    public static void main(String[] args) {
        //2.Runnable父类引用指向子类对象：多态 造型
        Runnable r=new MyRunnable();
        Runnable r1=new MyRunnable1();
        //线程启动必须是start方法
        //3.创建Thread类--Runnable对象传入Thread构造器中
        Thread t1=new Thread(r);
        Thread t2=new Thread(r1);
        //4.启动线程
        t1.start();
        t2.start();
        //练习：Runnable实现创建线程--MyRunnable1子类 r1 t2

    }
}
//1.子类实现Runnable并且重写run方法
class MyRunnable implements Runnable{
    //专门线程--提供功能方法run()
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("112233");

        }
    }

}
class MyRunnable1 implements Runnable{

    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("334455");

        }
    }

}